package com.work.cos.service.interfc.pay;

import com.work.cos.domain.vo.ComServiceResVo;

public interface IOrderService {

    // ---- third pay service start ----------------------------------------------------
    /**
     * 根据用户支付后支付宝异步通知处理本系统订单
     * <br>
     * 校验： 验证该通知数据中的out_trade_no，trade_no是否为商户系统中创建的订单号，并判断total_fee是否确实为该订单的实际金额（即商户订单创建时的金额）
     * 更新： 如校验成功， 更新订单状态
     *
     * <br> 由业务系统实现， 必须实现
     *
     * @param out_trade_no 本系统订单号
     * @param trade_no 支付宝订单号
     * @param total_fee 交易金额 单位 分
     * @param payMethod 	支付方式 1=ali；2=weixin @see Pay.PayMethod
     *
     * @return 成功 ：success ；其他 ： fail
     */
    String payOrder(String out_trade_no, String trade_no, int total_fee, int payMethod);


    /**
     * 订单退款
     *
     * <br> 由业务系统实现， 必须实现
     *
     * @param my_trade_no 本系统订单号
     * @param trade_no 支付宝订单号
     * @return
     */
    String refundOrder(String my_trade_no, String trade_no);

    // ---- third pay service end  ----------------------------------------------------

    // ---- app service start ----------------------------------------------------
    /**
     * 支付前处理
     *
     * <br> 获取订单支付前处理必须的信息由业务系统实现， 必须实现
     * @param payMethod @see Pay.PayMethod
     * @param orderId 本系统订单ID, 数据主键id
     * @return
     */
    ComServiceResVo prePay(int payMethod, String orderId,String serviceName);


    /**
     * 退款处理
     *
     * @return
     */
    ComServiceResVo refund(String my_trade_no, String trade_no,int refund_amount);

    // ---- app service start ----------------------------------------------------

}
